package 力扣题库;

import java.util.LinkedList;
import java.util.Queue;

public class p225用队列实现栈 {


    static class MyStack {

        //用两个队列实现一个栈
        Queue<Integer> queue1;
        Queue<Integer> queue2;
        public MyStack() {
            queue1=new LinkedList<>();
            queue2=new LinkedList<>();
        }

        public void push(int x) {
            //第一次，加入自己指定的队列中
            //第二次以后，加入不为空的队列
            if (!queue1.isEmpty()) {
                queue1.offer(x);//offer底层还是add
            }else if (!queue2.isEmpty()) {
                queue2.add(x);
            }else{
                queue1.add(x);
            }
        }

        public int pop() {
            //弹出元素，将非空队列中的size-1个元素加入到空队列
            //弹出非空队列的最后一个元素
            if (queue2.isEmpty()) {
                int size=queue1.size();
                for (int i = 0; i <size-1; i++) {
                    queue2.add(queue1.poll());
                }
                return queue1.poll();
            }else if (queue1.isEmpty()) {
                int size=queue2.size();
                for (int i = 0; i <size-1; i++) {
                    queue1.add(queue2.poll());
                }
                return queue2.poll();
            }

            return -1;
        }

        public int top() {
            //查看栈顶元素
            int res=-1;
            if (queue2.isEmpty()) {
                int size=queue1.size();
                for (int i = 0; i <size-1; i++) {
                    queue2.add(queue1.poll());
                }
                res=queue1.poll();
                queue2.add(res);
            }else if (queue1.isEmpty()) {
                int size=queue2.size();
                for (int i = 0; i <size-1; i++) {
                    queue1.add(queue2.poll());
                }
                res=queue2.poll();
                queue1.add(res);
            }
            return res;

        }

        public boolean empty() {
            return queue2.isEmpty() && queue1.isEmpty();
        }
    }


    public static void main(String[] args) {
        MyStack myStack = new MyStack();
        myStack.push(1);
        myStack.push(2);
        System.out.println(myStack.pop());
        System.out.println(myStack.top());
    }



}
